/**
 * @param {number[]} nums
 * @return {number}
 */
//https://mp.weixin.qq.com/s/JcsBahMXtwX2I7QkO6OTJA  图解演示
var removeDuplicates = function(nums) {
    nums = nums.sort((a, b)=>{ return a - b });
    if(nums.length < 2) return nums;
    let left = 0,right = 1; // 快指针  慢指针  循环位置相邻
    // 循环终止条件：快指针遍历完数组
    while(right < nums.length){
        if(nums[left] === nums[right]){
            // 当慢指针的值与块指针的值相等 不进行操作 
            // 只把快指针的位置向下移位 i++;
            right++;
        } else {
            // 当快慢指针的数据不相同时;
            // 将慢指针的下一位的值变更为当前块指针的值;
            // 快慢指针移动到下一位;
            nums[left + 1] = nums[right];
            left++;
            right++;
        }
    };
    // 去重结束后 left指针刚好指向去重后的数组最后一位
    // 使用slice()方法去 0-left正好是去重后的数组
    return nums.slice(0, left+1);
};
let array = [1,1,1,2,2,3,3,4,4,5,5,5,6,6,6];
removeDuplicates(array)